Variable radix adder and subtractor



Dec. 7, 1965 R. M. MEADE VARIABLE RADIX ADDEB AND SUBTRACTOR Filed NOV. 16, 1961 12 Sheets-Sheet 1 LOGIC UNIT GATE K P a CARRY PROPAGATE -404 \444 BINARY ADDER Pi =Bs CARRY OUT R FIG.8 LOG'CAL Bl f E S SM FUNCTION FORMER FORMER GATE J 440 CTRL 1 PROGRAM uN|T OP REGISTER 407 C i 46 CARRY DECODER R OUT L 1051 I TR|NARY ADDER PiQiM=TS /E0AL CARRY H3 402 sAvE GARRY PROPAGATE ADDER FL LOGIC i I FIG.4 FIG5 FIG.6 FIG? GATE 9 S,'; CARRY BIT PRE- suM Ts GENERATOR GENERATOR FORMER FORMER \m -J STATUS I i \m CONNECTIVE 5 PARITY GENERATOR FIG.14

ms 442 F TIMING s4 s2 s5 (P,O,MH (P,Q,M)2 (Emma (P,0,M)4 4 JENABLEDI l DSABLED INVENTOR R-- 4 MICROSECONDH ROBERT M: MEADE TOM-m ATTORNEY Dec. 7, 1965 R. M. MEADE VARIABLE RADIX ADDER AND SUBTRAC'I'OR Filed Nov. 16. 1961 TRINARY ADDER SUM FORMER 12 Sheets-Sheet 6 fi- 1965 R. M. MEAD: V vwuznuanis3min: lamina ANDY SUBTIXAPTI'QB up v med Nov. 16. 1961 12 sheefi s -t sh z 'zi BkNARfY AD ER LOGICAL FUNCTION G NERAT R' JPOPQ Dec. 7, 1965 R. M. MEADE 3,222,506

VARIABLE RADIX ADDER AND SUBTRACTOR Filed Nov. 16. 1961' 12 Sheets-Sheet a F G- BINARY ADDER an PREFORMER P101 An P467 Dec. 7, 1965 Filed Nov. 16. 1961 FIG.12A

R. M. MEADE VARIABLE RADIX ADDER AND SUBTRACTOR GATE CONTROL Hop 12 Sheets-Sheet 10 MODULAR ADD TRINARY CARRY GATE BINARY MODULAR SUBTRACT TRINARY CARRY MODULAR ADD TRlNARY CARRY GATE TRINARY OP (SO-31H 0P10-15) GATE 8 SEL 1 GATE TRINARY Dec. 7, 1965 R. M. MEADE 3,222,506

VARIABLE mm 11110311 mo sus'rmcron Filed Nov. 16. 1961 12 Sheets-Sheet 11 F|G,12B GATE CONTROL F |G,13 TRINARY ADDER 8 8 T 1 1m! 1 W CARRY 103 109\ couniggwg TPOARRITY PRmA TE M W 1 ZERO 0DD,EVEN

. 7, 1965 R. M. MEADE VARIABLE RADIX ADDER AND SUBTRACTOR Filed Nov. 16. 1961 12 Sheets-Sheet 12 CONNECTIVE PARITY GENERATOR United States Patent 3,222,506 VARIABLE RADIX ADDER AND SUBTRACTOR Robert M. Meade, Wassaic, N.Y., assiguor to International Business Machines Corporation, New York, N.Y., a corporation of New York Filed Nov. 16, 1961, Ser. No. 152,831 10 Claims. (Cl. 235-469) This invention relates to digital computers, and more particularly to a logic unit which can perform the logical operation of generating selective logical connectives on a, bit-by-bit basis as well as the logical operation of variable radix addition with parallel carry handling.

The logic unit accepts inputs from three sources designated P, Q and M. Generally, P is the addend, Q is the augend and M is the correction factor or modulus.

The logic unit has two basic modes of operation, add and connect which in the preferred embodiment are selected by microprogramming techniques. In add mode, the logic unit performs true variable-radix addition of two binary operands P and Q according to a radix or modulus M. In add mode, the modulus is a radix correction factor. In connect mode the logic unit performs bit-by-bit logical connective operations upon operands P and Q inresponse to control signals which specify the connective. In connect mode the modulus is forcibly set to a predetermined value which facilitates the logical connective operation. In add mode the control signals are forced to a specific value while the modulus is treated as a third variable.

The logic unit includes two separate binary arithmetic means. The first is a two input device for performing binary arithmetic operations upon two binary operands P and Q. This first device will be hereinafter referred to as a binary adder. The second arithmetic device has three inputs and performs arithmetic operations upon three binary operands P, Q and M. To distinguish the second arithmetic device from the first it will be hereinafter referred to as a trinary adder. The mathematics of most radix correction situations require selective addition of the modulus. This selection is performed in the logic unit during variable radix addition by selectively gating the output from the binary adder (sum radix) or from the trinary adder (sumZradix). Other operations follow gating rules indicated by binary and trinary adder carries and by the operation codes.

For example, it may be desirable to add binary-codeddecimal operands in a full-binary four-bit adder and convert the sum to binary coded decimal by the addition of the value six to sums which surpass nine [for example, 5(0101)+7(011l)=12(l100) in binary]. Subtraction of the modulus 1010), by adding the 2s complement 0110(6) in response to the over 9 situation produces 2(0010); the high order 1 (fourth order carry) is ignored and the result is the desired binary-coded-decimal sum digit 2.

To add in four-bit dozens, modulus 12(1100) is subtracted from sums over 11; other radices are similarly available.

PRIOR ART BACKGROUND Digital computers generally operate on data which is coded in binary fashion. The smallest item of informa- 3,222,506 Patented Dec. 7, 1965 tion is va bit. Each bit can be either electrically present or absent, or in the usual parlance, 1 value or 0 value. A small number of bits which are generally handled together are termed a byte. A byte in the preferred embodiment includes eight bits of data and a parity bit. One or more bytes can be combined to form a field, which is the basic information grouping for most communications situations within the computer.

Since the majority of the basic switching elements within the computer are two-state binary elements, in-

ternal operation is generally subject to a binary form of' description called Boolean algebra. Boolean algebra operates on the basis of two values, 1 and 0. If bit sources are designated P and Q, the 1 values are respectively (P) and (Q), and the 0 values are respectively P (not P) and 6 (not Q). The P and Q values can be combined by logical AND [P-Q, (P)(Q)] or by logical OR (PvQ) in eight fashions as follows:

P and Q can also be combined by other logical connectives such as V- (EXCLUSIVE OR), 5 (identity), arbitrary 1 or 0 settings and (dont care) settings where either P or Q is ignored.

Boolean algebra is explained in detail in such texts as Richards, Arithmetic Operations in Digital Computers, Van Nostrand, 1955.

In any byte and in any field, each bit order provides the bit with a particular distinct value or indication. These bit values difi'er with various radices of coding and with various logical uses of a word. For example, an eight-bit byte in binary code indicates zero by all 0's and a value range from (2) to (2 -1) by a pattern of 1 bits; that is 0 to 255. Bits are weighted 128, 64, 32. 16, 8, 4, 2, 1. Value is determined by summation of weights; i.e. an 8 bit plus a 2 bit equals 10.

In binary coded decimal, where each four-bit halfbyte indicates a decimal digit, the eight-bit byte indicates decimal values 00-99. In arithmetic of radix twelve, where a four-bit half-byte indicates values 0-11, the eight-bit byte indicates decimal values 0-143.

There are certain computer applications where it is desirable to operate in a nonstandard radix; for example, radix 88 might be of interest in musical analysis of a piano score. non-standard radix, computer operation is likely to involve a need for logical operation on a bit-by-bit basis as well as arithmetic operations.

Two bytes P and Q can be logically combined in many fashions. Among these fashions are carry-producing connectives (addition-subtraction) and various bit-by-bit logical connectives such as P'Q, PQ, PvQ, PQ, etc. For two bits, there are sixteen possible bit-by-bit logical connectives, which can be numbered 0-15. These connectives, and the result of applying them to two examples Especially in operations involving such a1.

presented to the adder and logically combined to respective bit order sums and carries.

I 3 P=ll1l and Q= OHO (Result A) and to P=O11 and Q'=0l0l (Result B) are shown in the chart below:

Connective Number Result A Result I! All Zeros (don't car0). 0 0000 0000 Poi. 2 1001 0010 P(donteareQ) 3 1111 0011 4 0000 0100 HQ (don't a... P), 5 0110 0101 two (EXCLUSIVE on 0 x1001 0110 PvQ 7 1111 0111 e I I ,s 0000 1000 P t) (identity) 0 0110 1001 6 (don't care 10--.. 10 1001 1010 PvQ 11 1111 1011 (don't care Q) .-l.: 12 0000 1100 ,FvQ Y a 13 0110. 1101 All Ones (don't care) 15 llll llll Prior art has shown various methods of logically com bining two data groups Among these mechanisms are various forms of adders. The basic categories of the adder art are serial and parallel adders, characterized by the serial or parallel presentment of various order bits to the mechanism, for combining them. In a serial adder, for

. example, the low order bit of the addend and the low order bit of the augend are presented'together, combined bit-by-bit basis are produced in parallel and; the carrieson succeeding addition cycle-there are etfectively three binary.

bythe adder to produce a-sum and a-carry, and the sum 1 and carry are processed on to a storage medium. The

1 next higher order'bit of 'the' addend and the next higher .and carry. For each order, the sum is stored and the carry is retained for use in forming the sum of the next 1 higher order bits.

In the parallel adder, the entire augend and the entire addend arepresented to the adder simultaneously, that is,

in parallel. The addend low order bit and the augend low order bit are logically combined to produce asum and carry; atthe same time all other order bits of the addend and the respectively corresponding bits of the augend are produce The carries, however, become a problem since the lower order carries can affect both the higher order sums and the higher order carries. In any particular: order, a carry can be generated when the addition sum exceeds the radix or a carry can bepropagated when the additionsum is equal to the radix and alower order carry is presented. Various methodsof carryhandling include the following:'

. Carry ,Ripple Carry Save Carry Propagate Carry Select 1 Y The carry ripple parallel adder combines the parallel sum generating logic with what amounts to a serial carry mechanism. It is possible for a carrygenerated by the lowest order to propagate carries throughout all orders into the highest order or even produce a carry overflow out of the highest order. Depending upon word length, the

, carry ripple can be slightly time consuming or can be a major speed limiter. I

The parallel carry save adder operates on the assumplion-that addition is likely to berepetitive. The sums on'a operand bits presented to the adder logi'c -thejv a11gend,' I the addend, and the carry-save (from the previous addi- 'tion). The carry-save adder thus might be characterized as a three-input half adder. It accepts as inputs theaddend, augend and carry and produces an intermediate resuit-oddness sum and save carry-rathejrthan the-'final.

sum. The term oddnesshere refers to a binary sum value of one, produced when "the three input operands include an odd number of binary ones. A final dummy addition cycle is required to insert the carry'into the finaltotal.

The carry propagate parallel adder provides a logically developed carry for each bit position simultaneously with 1 the logically developed sum. In adders for a large word size, the carry propagate logic may be many times as com I plex as the sum development logic, since the carry-fora particular bit order such as bit 2 depends upon the carry generate signals from 'lower order'bit positions (2 2', 2

2) as well as upon carry propagate signals from the lower order bit positions. Logic is provided to produceacarry.

into the particular'bit order, such as -bit 2?, whenever the '1 appropriate conditions fora carry'occurl. These condi tions are: carry generate in alowerforder together with I For are ample, a carry generate from order 2 and carry propagate carry propagate through all intervening orders.

in orders 2 and .2 produces a carry into-order 2?." For high orders such as 2 it is must be extensive. I I The carry select adder is in the-formofi two adders.

One adder anticipates a carry and the other adder antici patesa no carry. The sum with carry-is. available as-is p the sum without carry. 'The carry indication selects-the output of one or the other of the two adders. This type of carry provision isapplicable to .a serial addenor to;

a composite of carry-propagate groups within a large adder. It has even been appliedto.binary-decimal radix correction by selecting, under control of. a binary nomarry or binary carry the output of a binary adder bran sa as. z

6 binary adder, respectively This invention freely borrows j nechanisni andphildsw I phy from prior art adders, antalgamating certain features z. of carry propagate, carry save and-carry select'adde'rs into a logic unit having very fast logical counective'an'd true. variable'radix addition capabilities.

f The prior art has also shown bit-bysbit logical 'conncw tive mechanisms, generally as a matter of chance in switching logic butalso in universal decoder setups.

Annet e Units for Digital Computers, Hughes Aircraft. 1

U.S. 2,609,143Sept embefr2, 1952---Stibitz --,-Electrdn for Addition'and vsubtractionfflno ic Computer listed.

. us. 2,719,670--Oe1ober '4,1 9 54s.s gartaaa1' I and Electronic Digital Computers no assignec listed.

' U.S. 2,879,00l--Mar'ch 24, l959 -weitiberger mat,

High Speed Binary Adder Having Simultaneous Carry Generation-U.S. (Secretary of Commerce).

Us. 2,98l,471--April 2s, 196l Eachus--Inforn1ati0n Manipulating Apparatus-Minneapolis-Honeyweil.

U.S. 2,989,237June 20, 1961--;o it .-t:r,dsd p 01 mal Adder Subtractor-ICT.

apparentthat the carry logic;

' Exemplary of prior art are the following US. patents:

tive results.

U.S. 2,9S9,768November 8, l960-White et al.- Comparator-IBM.

LOGICAL CONNECTIVES Us. 2,820,897-January 21, 1958-Dean et a1.-Un.iversal Gating PackageComputer Control Corp. Inc.

ZERO CHECKERS US. 2,905,383--September 22, l959Bruce-Register Zero Test--IBM.

OBJECTS The objects of the invention are:

(1) To perform specified logical operations upon coded operand bytes presented to the logic unit.

(2) To perform a variety of logical operations upon a plurality of operand bytes presented to the logic unit.

(3) To perform selective logic including true variablerad ix algebraic addition upon a plurality of data bytes presented to the logic unit in consideration of a modulus byte simultaneously presented to the logic unit.

(4) To perform selective bit-by-bit logical connective operations upon a plurality of data bytes presented to the logic unit.

(5) To perform full parallel high-low-equal comparison upon a plurality of data bytes presented to the logic unit and generate control signals indicating results of the comparison.

(6) To perform selection of one of the presented operand bytes according to a number of criteria such as Max. (P, Q), Min. (P, Q), P Q, PEQ, etc.

(7) To provide parity indications on logical connec- SUMMARY- -SEE FIG. 1

The variable radix logic unit combines an addend byte P from register 101 with an augend byte Q from register 102 according to a modulus byte M from register 103. Bytes P and Q are presented in parallel to binary adder 104 and also to trinary adder 105. Byte M is presented to trinary adder 105 only. Trinary adder 105 selectively provides at one time (under control of program unit 106) a binary full sum of three operands P, Q and M (actually P+Q-M, P-Q-i-M, QP+M) and at another time a bit-for-bit logical connective of bytes P and Q. Connective parity generator 109 provides parity indications of the result of connective operations, which are useful for program modification and control. The logical connective parity signals pass to inference register F 112.

For variable radix addition, gate control circuit 107, which is responsive to carry out signals from the binary Features of the invention are:

(1) The provision of a binary adder to which two operand bytes are presented in parallel for addition in standard binary. fashion, together with the provision of a trinary adder to which the identical two operand bytes and a modulus byte are presented simultaneously. The modulus byte provides radix correction. The binary adder thus provides a full sum (including carries) for the two presented bytes which is correct if the radix is not exceeded. The trinary adder provides a full sum (ineluding carries) which is correct if the radix-modulus is exceeded. The binary adder and trinary adder provide carry signals which condition gate control circuits to select the appropriate adder output as the correct sum.

(2) The provision of parallel carry save logic as the first stage of the trinary adder with a carry propagate adder as the second stage. This produces full parallel three-input binary sums of addend, augend and modulus.

(3) The provision for development of a full set of logical connectives of two data bytes on a bit-by-bit basis in the carry save logic of the trinary adder with a mini; mum of additional mechanism. 1

(4) The provision for development of a test for equal-:

-ity on the basis of the half-sums of the difference P-Qi or Q--P produced by the first stage of the binary adden (5) Utilization of microprogramming techniques by which instruction word bits can directly condition logic blocks for the particular instruction.

ADVANTAGES Advantages of the invention are:

(1) Complete variable radix capability. The modulus byte can provide correction to a complete variety of radices up to the maximum value of the adder.

(2) The development of bit-by-bit logical connective signals at minimum expense, gating directly from a single instruction for each connective. For example, the connective Pv'Q is set up directly by the bit structure 1011 of the Logical Connective 11 (Pv Q') instruction. I

(3) Full parallel operation during a 250 nanosecon total variable radix add time.

(4) Almost any number of arithmetic and logical operations can be performed by the relatively simple loglic unit by providing it with appropriate program contro i The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular description of a preferred embodiment of the invention, as illustrated in the accompanying drawings.

Figure block diagram.

The specification follows the format of the figures; the page numbers indicate the start of the most complete explanation of the appropriate figure. The list of figures thus serves as a table of contents.

Duplications of circuitry have been deleted from the figures in favor of brevity and the clarity which depends upon brevity. Terminal boards appear on many of the figures as signal tap and label points. Where several signals are produced by similar logical circuitry, only a representative signal production circuit is shown. Other similar signals are deemed to be available at the terminal board. It is to be noted that the terminal boards are included in the application as label points primarily; the speed requirements of the logic unit generally make dilcai Function Genero- Connective Parity Generatorschematic and all Os.

rect connection by short wires more desirable than terminal board connections. The imaginary terminal boards make each figure self-sufiicient; there is generally no ,need to trace signals from figure to figure. Reference characters include the. figure number and two final digitsnumber l-01-1l6 are first shown in FIG. 1; numbers 1101-1113 are first shown in FIG. .11. Where the same 'item appears inlmore than one figure, it retains the reference number ofits firstappearances Terminal board 505, forIexairrple'appea'rs in both FIG. 5 and FIG. 6.

LOGIC UNIT-'iFIG. 1

The logic unit is primarily designed as the basic processor for 'a computer having the usual features of memory, processor, and program unit. The program unit derives a format of operation'froin a series of instructions stored in the memory and operates suitable electronic gates throughout the computer to move data from memory to the processor and to move processing results on to the memory. I

' Although the memory and program areas of a general purpose computerare complex and heavily interrelated with all other sections of the computer including the processor, for purposes of understanding this invention .bothmem'ory and program unit may be considered simple. The function of the memory is to provide operand bytes P. and Q to registers 101. and 102, respectively; to provide a modulus byte M to register 103; and to receive 'a sum byte R from register 113; or to receive an inference byte F from register 112. Program unit 106 controls each function. Gate 114 allows byte P to pass directly to register R 113 when required. Operation register 115 and decoder 116 within program unit 106 connect with adder's104 and 105 in control fashion.

Full advantage of the speed of the logic unit requires very high speed memories or memory multiplexing so that registers P, Q,'M, R and F can be serviced each logic cycle. Techniques for such memory multiplexing may include high-speed butters with ring-controlled gating or of bytes Pand Q. Connective parity generator 109 pro-,

vides parity of logical connective result signals to F register 112; the-logical connective result passes to R. For variable radix addition, gate control circuit 107, which is responsive to carry out signals from the binary and trinary adders, selects the output of binary-adder 104 (correct for sums less than the radix) or of trinary adder 105 (correct for sums equal to or greater than the radix). Gates 110 and 111 pass the selected adder output to result R register 113. Trinary adder 105 comprises a threeinput carry. save adder in tandemwith a two-input carry propagate adder.

The carry save adder develops logicalconnectives with no additional mechanism. Duringlogical connective operations, themodulus byte M is effectively both all 1s This effectively causes the modulus to be ignored.

, Status Indicator 108 monitors adder results and sends signals indicating the value of a comparison of input bytes P and Q to inference F register 112.

Trinary adder 105 includes as its first stage, or carry save logic, a logical function generator (FIG. 4). Trinary adder 105 also includes as a second stage, or carry propagate adder stage, a byte carry generator (FIG. 5) a bit preformer (FIG. 6) and sumformer (FIG. 7). Control of gating to accept selectively the output of either the binary adder 104 or the trinary adder 105 or of P register 101 direct-1y is by gate control block 107 (FIG. 12).

The logical connective'is developed from the first stage of the trinary adder, from which the connective results pass via the carry propagate adder and Gate TS block 111 to output register R 113 while the parity indications generated by connective parity generator 109 pass to the inference F register 112.

TIMING--FIG. 2 (SEE ALSO FIG. 1)

The basic cycle of 250 nanoseconds for register operation is followed. Registers P, Q, M, R and F are each in condition to accept data upon the leading edge of the 250 nanosecond square wave clock pulse. The actual setting of the register takes place at component-limited maximum speed, with dynamic change within the register enabled by the clock pulse. Between clock pulses dynamic change is disabled. The entire logic unit is enabled simultaneously by clock pulses from a single source. The flow of logic is asynchronous during the enabled portion of the cycle, during which many circuits are set up for their ultimate function. All sections of the logic unit are designed to complete their functions prior to the following clock cycle pulse rise.

The registers are generally latches. They are subject to dynamic change during the enabled portion of the clock cycle, during which they attain a state dependent upon their inputs. They retain this state during the remainder of the enabled portion of the cycle and through the following disabled portion of the cycle. The latch is set during the clock pulse (enabled); it retains useful information in static form during the period'between clock pulses (disabled). During the disabled period the information fiow path is set up to the next register down stream. A more complete description of latch registers and their operation is included in a copending application of Robert M. Meade, Transistor Circuits for Digital Computers, Serial Number 027,235, filed April 14, 1960, and commonly assigned with this application.

The timing diagram shows a space of l microsecond during which four basic logic cycles occur. On the first cycle, operand bytes P and Q and modulus byte M are latched in their respective registers. Logical manipulations begin immediately and are to be completed during the following 250 nanoseconds. At the start of the second logic cycle, the logical result of the first cycle (S1) is gated onward into register R (setting the latches which are enabled for dynamic change) and new operand and modulus bytes are latched in registers P, Q and M.

The second logical operation is thus undertaken, to develop S2. The logical result for any given operation is gated into sum register R at the same time that the logical operand and modulus bytes for the next logical operation are being gated into the P, Q and M registers.

At the leading edge of the fifth pulse, the S4 sum (result of the fourth logical operation) is available at tional units of the machine the orders contained in the FIGURE 1 relates the other figures as an overall block diagram. Binary adder 104 includes a logical function "fittedis-likely to'be 'complex' and extremely flexible in the type of operationsunder its-control. -Nevertheless,

correct operation of the logic unit of this invention for each of the several operations in its basic repertoire can be controlled by a few program signals such as those shown to be available at program terminal boards associated with the various mechanisms. The program unit must operate the memory in such manner that modulus byte M and bytes P and Q are available when necessary and that space is available for storage of sum bytes S in the R register 113 or logic connective status bytes F in the F register 112. The R and F registers, of course, need not feed directly into the memory but their outputs may be subjected to further processing under program unit control by other sections of the general purpose computer.

A suitable source for P, Q and M bytes is the output of an editing unit. Such a unit is disclosed in copending US. patent application of Robert M. Meade, Editing Unit, Serial Number 066,251, filed October 31, 1960, and commonly assigned with this application.

OPERATIONS AND GATINGFIG. 3

FIGURE 3 illustrates the operations repertoire of the logical unit and the relationship between the inputs P, Q and M. Logical and arithmetic operations are selected by a binary numeric code in the value range 16-31. Logical connective operations, not shown in FIG. 3, are selected by a binary numeric code in the value range -15, according to the chart below:

For logical connective operations, Gate In is--M, all 1's; True P; True Q.

The chart shows the operation (OP) codes as decimal numbers. These OP codes are actually the binary equivalents of the listed decimal numbers 0-31. The pattern of bits forming the OP code specifies the operation.

The OP code bit pattern is decoded into signals which are used to control gates. Operation 16, for example, gates true P" and complement Q" to the adders; operation 30 gates all ls as a substitute for the modulus M, and true P and true Q. OP codes are assigned class numbers I or II depending on which operand is comp1emerited.

The next major column, OPERATION PER- FORMED, of the chart also explains the operation performed in algebraic formula or short statement form. OP 30, for example, is P+Q/binary/ while OP 31 is P+Q/modulo M/.

The next two major columns, CARRY OUT and NO CARRY OUT, explain the significance of carry signals. In OP 17, for example, a binary carry out signal under BIN) indicates (under IND) PZQ, while a binary no carry out signal indicates P Q.

The next major column is GATE OUT. In OP 31, for example, a trinary carry out signal, which indicates P+QM (TRI l, IND P+QZM, under CARRY OUT) gates FUNCTION (P+Q/ base M/ from the TRINARY adder. Similarly, under column NO CARRY OUT, a trinary no carry out signal (TRI IND P+Q M) which indicates P+Q M gates the function P+Q/base M/ from the BINARY adder.

Operation 31 being one of the most complex operations, a full modulo M addition, its explanation should clarify the entire FIG. 3 chart. It is desired to add P and Q and correct the sum to modulo M. If the sum P+Q does not exceed the radix (4+3 does not exceed the radix 10) the correct sum is the output of the binary adder, P+Q. If the sum P+Q exceeds the radix (4+8 exceeds the radix 10) the correct sum is the output of the trinary adder, P+Q-M (4+810=2).

To perform the modulo M addition, register M is complement gated to the trinary adder and registers P and Q are each true gated to both the binary adder and the trinary adder. The output of the binary adder is thus P+Q; the output of the trinary adder is P+Q--M. If P+Q-M produces a carry out of the high order, then P+QM and the trinary adder output, which includes radix correction as a result of adding --M, is selected as correct. If there is no carry out of the trinary adder, then P+Q M and the binary adder output is selected as correct.

Example 1.Add 5+6/base 8/. The sum 11 exceeds the radix 8 by 3. P=5; Q=6; M=8. The gating is 5+6 to the binary adder and 5+6+(8, the 2's complement of binary 8) to the trinary adder. or 3+trinary carry out of the 8's order. causes gating to be from the trinary adder. The correct sum is 3 plus carry/base 8/.

' Example 2.Add 2+3/base 7/. The sum 5 does not exceed the radix 7. P=2; Q=3; M=7. The gating is 2+3 to the binary adder and 2+3-H9, the 2's complement of binary 7) to the trinary adder. There is no carry out of either adder; the no carry out of the trinary adder causes selection of the output of the binary adder (2+3=5) as correct.

The adders in the preferred embodiment use binary values; the examples have been somewhat simplified by using decimal values. FIGURE 3 provides all necessary gating information for'the repertoire of operations; this information is implicit in circuits to be described in detail.

OPs 18-23 provide equals comparisons of operands P and Q by examination of the binary half sums, rather than the adder carries. Half sums are either all 1's" or not all 1's and operation control depends upon the all ls condition. In OP 20, for example, P is true gated and Q is complement gated to the binary adder. The binary half sum all ls indicates P=Q and causes a no gate to set the R register to all Us. The binary half sum not all ls indicates P Q and causes gating of P direct to TRINARY ADDER LOGICAL FUNCTION GENERATOR-FIG. 4

The trinary adder (see FIG. 1, block receives inputs from each of three registers P, Qand M. Its function is to provide a full trinary sum according to its gating or selectively to provide bit-by-bit logical connectives of the bytes from registers P and Q. FIGURE 4 illustrates representative trinary propagate and trinary generate logic. Only one order (blocks 401411) and a terminal board 412 are shown. The logic of position 1 is duplicated for each other bit position 2-8. Blocks 401-404 and 408 are microprogramed to generate partial sum bits during modular addition operations in response to hit signals from the bit-1 positions of registers P, Q and M. During logical connective operations these same blocks are microprogramed to generate the modulus function in response to the forced equivalent of both the modulus bit and notmodulus bit and bit signals from thefbit-l-positions of registers P and Q.

S+6+8=19,- The trinary carry t. 11 Blocks 405-407 and 409 develop the trinary carry gencrate signal by directly decoding each' of the three situations which can produce such atrinary carry generate (which is really a majority factor) for the particular bits (position 8 shown) of registers-P, Q and M. These situations are P8Q8, Q8M8 and P8M8.

. During modular addition and other add mode operations', the four inputs to block 401 must all be conditioned by -,it signals to provide a --n output. The P1 signal indicative of a 01in the '1 position of register P and the 7.51 signal, indicative of a in the 1 position of register, Q, and the M1 signal, indicative of a 1 bit in the 0 position of modulus register M1, when combined, produce a 1 bit as the partial sum. Thethird input is conditioned by the OP 16-31 signal in the add mode. With all four inputs negative, Ap block 401 provides a negative output which passes to On block 408, conditioning block 408 to provide at terminal board 412 and at Cn block 410 a n TPS1 signal. The convert Cn block 410 provides a +p TPS1 and a p TPS1 signal at the terminal board.

Another possible source of a trinary partial sum 1 bit for position 1 is the appearance of l-bits in position 1 of each of the three registers M, P and Q. These three signals' and the OP (16-31) signal applied as n inputs to Ap block 402 provide an output which conditions -On block 408 and provides the -n TPS1 signal and via block 410 the +p and -p TPS1 signals. Other situations where there is oddness in position 1, in which TPS1 signals should appear, are P1, Q1, H1 at Ap block 403 or H1, P1,?j1at Ap block 404. Blocks 401, 402, 40a and 404'thus each recognize a particular oddness situation of position 1 inthe three registers M, P and Q and provide outputs indicative of these four possible oddness situations. -On block 408 and Cnblock-410 process the oddness outputs to provide the n, +p and -p voltage levels of the TPS1 signal. TPS signals for the other bits 2-8 are similarly prepared.

' COMPONENTS Because maximum speed is an objective, the preferred embodiment uses high-quality current-mode. transistor circuits. These circuits are more fully described in the following:

Transistor Theory and Application, Customer Engineering Manual of Instruction, IBM form 223-6783-1, 1959, pages 43-48.

Component Circuits, Customer Engineering Manual of Instruction, IBM form 223-6875-1, 1960, pages 17-35 and following.

Circuits operate on +n, n, +p and p voltage levels. The input and output levels are shown in the diagrams by small n or p characters at the bottom of the blocks.

The circuits perform the following logical functions:

LOGICAL CONNECTIVE OPERATION-FIG. 4

During logical connective operations, one input to each of Ap blocks.401'-404 is continuously conditioned by the OP (0-15) signal, which simulates both a 1-bit and a T-bit in themodulus register M. P1, Q1, P1 and 61 signals are applied directly from the respective registers. The bit structure of the logical connective operation instruction is used directly to control -.Ap blocks 401-404 to provide the proper logical connectives. Logical connective operation 0, for example, must fail to produce any TPS signal because the bitstructure of the instruction does not contain an OP C 8 bit which is required by Ap block 401, an OP C 1 bit which required by Ap block- 402, an OP C 4 bit signal which is required by Ap block'403 or an OP C 2 bit which is required by Ap block 404. Logical connective operations are specifically limited to operations 0-15 so the OP (16-31) signal is also not available during these periods.

For logical connective 1 (PO) only Ap block 402 is conditioned since only the OP C 1 bit signal appears. Ap block 402 is conditionable by an OP (0-15) signal on its first input, Pl on its second input, Q1 on its third input and OP C 1 bit on its fourth input to provide via blocks 408 and 410 the TPS1 signal at terminal board 412. The Ap block 402 thus provides the TPS1 signal upon occurrence of P1 and Q1 during logical connective 1 (PQ).

Ap block 404 is elfective to provide logical connective 2 (P6) upon occurrence of the OP C 2 bit signal during logical connective operations.

Ap block 401.is elfective to provide .the m logical connective 8 upon occurrencev of the OP C 8 bit signal during logical connective operations.

Other logical connective operationsiinvolve composites of 1, 2, 4, 8 bits in the logical connective instruction. For example, logical connective operation 5 is Q (don't care P). Ap. blocks 402 and 403 are each effective to provide the TPS1 signal upon occurrence 'of a related condition within the Q (dont care P) logical situation. Block 402 responds to the PQ situation, and block 403 responds to the PQ situation, each by providing the TPS1 signal.

Logical connective operation 12 is P (dont care Q) and involves blocks 401 and 403. Block 401 responds to the PE situation and block 403 responds to the PO situation to provide the TPS1 signal upon receipt of information indicating P (dont care Q).

Logical connective 14 is P'vQ'. The Ap.blocks 401,- 403 and 404 respectively provide a TPS signal upon occurrence of F6, P'Q or PO. 'IfivPQvP'Q is factorable 'FflivQ) v 1 6 which is immediately reduced to PvPQ' by removing the redundant logical term ('Q'vQ). PvPZj=PvQ since the P term includes m, the only situation which the P term in (P6) excludes. Accordingly, the final result of logical connective 14 is Pvfi.

Logical connective 15 is all 1's," a complete dont care. -Ap blocks 401, 402, 403 and 404 are all conditioned by their respective instruction bits inputs 8, 1, 4 and 2. Regardless of what the bit structures in position 1 of registers P and Q are, one of the four blocks is conditioned to provide the TPS signal at terminal board 412.

During add mode operations, majority Ap blocks 405, 406 and 407, On block 409 and Cu block 411 combine to produce trinary carry generate terms for position 8 at terminal board 412. Ap block 405 is receptive to the P8Q8 situation during modulus M and binary add operations, as indicated by the OP (28-31) enabling signal. Block 406 is receptive to the Q8M8 situation in block 407 and to the P8M8 situation to provide at -On block 409 a signal for each of the three possible carry generate situations for position 8.

Similar circuits are provided for each bit position (l-8) in the trinary adder so that TPS signals 1-8 and TCGT signals 1-8 are available to those circuits in other figures in which they are required as inputs.

FIGURE 4 illustrates the carry save logic section of the trinary adder. The carries are not really saved, since they are available directly to the two-input binary carry propagate adder which forms the final stage of the trinary adder, rather than stored in triggers as in the usual carry save adder. To achieve the speeds desired, the carry save logic and the carry propagate adder of the trinary adder are somewhat intermingled, wherever the intermingling helps to achieve the objectives of speed, accuracy and overall economy.

The basic function of the carry save logic section is to reduce from three to two inputs. It provides to those succeeding circuits which require them the oddness function of the three inputs P, Q and M (TPS signals) and the majority function of the three inputs P, Q and M (TCGT signals). The normalv usage of these functions in a carry save adder is as the partial sum (T PS) and as the carry to be saved (TCGT). In a true carry save adder, however, the M input would not be from a modulus register, but rather from the group of carry save triggers, so that the third input to the carry save adder would be the saved carn'es. The term carry save logic, descriptive of the first level of the trinary adder, differs from the standard carry save adder description in these particulars:

There are no carry save triggers.

There are no carry inputs, but modulus inputs instead. Throughout this patent application the term carry save logic always carries this meaning.

The carry generator accepts trinary partial sums TPSl-S and trinary carry generate term signals TCGT1-8 from FIGURE 4, and on suitable modular addition operations provides via logic block 501-504 and 506-516 the required trinary group carry generate and propagate signals for groups 1-4 and -8. Intermediate trinary carry generate signals TCG1-8 and trinary propagate signals TP1-8 are made available at terminal board 505. Carries out of the group in the FIG. 5 circuit are TG1-4, a generate carry out of position 4 of the l to 4 group; TPS-8, a propagate term for position 8 of the 5-8 group; and TG5-8, a generate term for position 8 of the 5-8 bit group.

The trinary group carry signal TG1-4 is produced by lookahead carry mechanism of standard type. Block 514 has four inputs which respectively respond to an assigned one of the four situations which can cause a group carry. The low input of the four is connected directly from TCG4 from terminal board 505, a trinary carry generate signal from the bit-4 position. The next input causes a T614 signal upon coincidence of a carry generate signal TCG3 and propagate signal TF4 at Ap block 508 to provide a group carry from group 1-4. Stated functionally, Ap block 508 responds to the situation where position 4 is in carry propagating state and a carry is introduced into position 4 from position 3. Ap block 507 responds to signals TCG2, TP3 and TP4, allowing a carry generated in position 2 to propagate through positions 3 and 4 and via On block 514 provide the T614 signal at terminal board 517. Similarly Ap block 506 responds to the carry generate condition in position 1 and to propagate situations in positions 2, 3 and 4 to provide via 0n block 514 the T614 signal at terminal board 517. Block 501 (which includes Ap block 502 and Op block 503) and block 504 (which includes Ap 518 and On block 519) together with six other blocks (not shown) similar to block 504, provide at terminal board 505 TCG and TP signals 1-8. The TCG signals are trinary carry generate signals. Block 501 is specifically for the units order and responds to the trinary partial sum signal TPSl and to a hot one in operations 28, 29 and 31.

In each of these three operations (see operations charge 1 FIGURE 3) there is a complement input, either P, Q or M. Proper handling of complements requires the "insertion of a hot one in the units order to anticipate the end-around carry. Occurrence of both the TPSl signal and the hot one conditions Ap block 502 and On block 503 at 1 to provide at terminal board 505 both the trinary carry generate signal TCGl and the trinary propagate signal TF1. The TPSI signal alone provides via On block 503 only the TM signal.

14 The trinary partial sum signal TPS from FIGURE 4 for a particular bit position is combined with the trinary carry generate term TCGT signal for the preceding bit position to provide for the bit position a TCG signal and a TP signal at terminal board 505. For bit position 7,

TPS7 and TCGT6 combine as inputs to Ap 518 to provide the TCG7 signal and combine as inputs to On block 519 to provide the TF7 signal at terminal board 505. Other bit positions 2-6 and 8 are handled similarly to bit position 7.

TRINARY ADDER BIT PREFORMER-FIG. 6

Trinary propagate signals TP and trinary carry generate signals TCG are available from terminal board 505. Convert blocks Cu 601 and On 602 convert the TP and TCG signals respectively to desired voltage levels at terminals AvB and AB respectively of terminal board 603. The opposite voltage level provides (K331?) and (E) values. These intermediate or preformed bits are used by the circuit in FIGURE 7 in combining functions to produce the sum. Cn block 605 similarly provides a binary carry in signal TCT2 at desired voltage levels by converting the TCGI signal. A trinary propagate signal TP2 together with the trinary carry generate 1 signal TCGl join as n inputs to Ap block 606 to provide via On block 607 the TCT2 signal at terminal board 617. The TCT signals are elfective trinary carry to-- signals. The trinary carry to 4 signal TCT4 at terminal board 617 is similarly generated via On block 610 upon occurrence of one or more of three situations as follows:

(1) Trinary Carry Generate l-l-Trinary Carry Propagate 2 and 3, TCGl, TP2, TPS at Ap block 608.

(2) Trinary Carry Generate TCG2 and Trinary Propagate TPS at Ap block 609.

(3) Trinary Carry Generate TCG3 on the low input of On block 610.

In the 5-8 group, trinary propagate inputs TP5 and TF6 join as inputs to Ap block 611 to produce an intermediate function, trinary propagate bypass to position 7 TPB7. Trinary Carry Generate 5 signal TCGS and trinary propagate term TP6 combine at Ap block 613 and pass via On block 614 to provide the TCT7 trinary carry into 7 signal at terminal board 617. A. carry generate signal from position 6, TCG6 on the lower input of block 614, also provides the TCT7 signal. Intermediate trinary propagate bypass to 8 signal TPBS is provided by trinary propagates 5, 6 and 7 to Ap block 615 with conversion by Cr: block 616 to proper voltage levels. Cn block 618 converts the TPS signal to a TPB6 signal at proper voltage level. The propagate bypass to signals indicate a string of propagates, thus allowing development of high order carries conveniently early.

The function of the trinary adder carry generator and bit preformer is to accept functions TCG and TP which are the output of the logic (FIG. 4) and provide intermediate functions which can be combined by the circuitry of the trinary adder sum former. FIGURES 5, 6 and 7 show circuits which form the trinary sum.

TRINARY ADDER SUM FORMER-FIG. 7

FIGURE 7 illustrates a receiving terminal board 701, circuitry 702-709 for logically combining the signals from terminal board 701 and connecting the combinatorial results to terminal board 710, and logic 711-719 for combining signals from terminal board 710 to provide a final level of logic and gating and provide the final binary sum bits at R register 113. A gate trinary signal at the top of terminal board 710 is supplied by circuitry to be explained infra (FIG. 12) which provides a fina level of gating to bits l-8. Bit 1 of the sum is developed by by EXCLUSIVE OR circuit 702 from n signals TPS from FIGURE 4 and the HOT 1 signal (OP 28 29, 31), converted by Cp block 703, gated by An blocl 715 to. provide the the one bit of the sum. Since carries cannot generally afiect the low order bit, productior vide Ap block 704 with an oddness output, or half sum [(AvB) (AB)2] which is an oddness factor for position 2. This oddness factor combines with the TCT2 signal at EXCLUSIVE OR 711 to provide via gate 716 the 1-bit for position 2. (KB) is available at -p level. Circuits for forming sum bits 3 and 4 are similar to the circuit for forming sum bit 2.

The-circuits for forming sum bits 5-8 are more complex since they must take into consideration the possibility of a group carry from bit group 1-4. Accordingly, the position 5 bit is produced by Ap block 705'in the situation where there is one l-bit but not two and where there is no group carry from group 1-4. Ap block 705 is an oddness factor available upon receipt of p signals (AvB)5 and (Ki')5 to condition one input of Ap block 712. The other input of Ap block 712 is conditioned by a -p (TGI Z) signal so that Ap block 712, gated by An block 717, provides at R register 113 terminals the position 5 bit upon recognition of an oddness situation with no group carry. On block 706 is responsive to p signals (AB)5 M to provide an e'vennessfactor at Ap block 713. The other input to Ap block 713 is --p TG1-4, the group carry out of the low order four bits. Coincidence of the evenness factor signal and the carry-in at Ap block 713 provides via. gate An block 717 the bit for the five position of the sum.

Development of the bit forposition 6 of the sum involves circuit blocks 707, 708, 714, 718 .and 719. Gate blocks 718 and 719 provide a double function by performing as the final level of logic. An block 707 is responsive to the group carry from the low order four bits signal +p TG1-4 and-to the propagate situation in bit 5 as specified by signal +p TPS to provide an input to Op block 714 representing the carry propagate to position 6 situation. The other input to Op block 714 +p TCT6 represents the carry generate situation in position 5 so that Op block 714 provides a +n F56 signal indicative of a no carry into 6 situation in position 6 to Art block 718 and provides a +n CT6 signal indicative of a carry into position 6 to An block 719. Thus, final level gate blocks 718 and 719 function in mutually exclusive fashion to gate the output of Ap block 708 according to the CT6 signal. Terminal board 701 provides inputs p (AvB)6 and p (Kl 336 to Ap block 708. If a carry into position 6 has occurred as indicated by board 810 and also to condition On circuit 805 to provide the binary carry generate 1 signal BCGl-ll at terminal board 810. Blocks 803 and 804 respond to a a +n CT6 signal to An block 719, there will be a position 6 bit developed in response. to an evenness situation indication from Ap block 708. -Ap block 708 responds to p signals (AvB)6 and (K136 to provide +rt signals TF6 (oddness) and B6 (evenness). Blocks 707-708 and 714,718-7-19 thus develop the position 6 bit of the sum by carry lookahead techniques. a The circuitry for positions 7 and 8 are similar to the circuitry for position 6. The signal +p TCT8, which is not available at terminal board 617 of FIGURE 6, is developed by An block 709 from the +p TCT7 signal and the j-l-p TPB7 intermediate signal.

BINARY ADDER LOGICAL FUNCTION GENERATOR-FIG. 8

' cuitry 802-809 to provide at terminalboard 810 signals necessary to develop carry propagatelookahead. Circuit blocks802-805 respond to situations which produce carry generates from position 1. Ap block 802 responds-to the P1Q1 situation to provide a P1Qlsignal at terminal- HOT 1 input on operations other than 30-31 together with respectively a P1 or Q1 signal to condition On block 805 and provide the BCGH'l signal at terminal board 810. Ap block 806 produces a PIQI signal at terminal board 810 in response to those inputs.

Since the HOT 1 does not affect the second and higher orders, circuitry to provide the BCG2 and BP2 signals is less complex. Ap block 807 directly provides the BCG2 signal in response to coincidence of P2 and Q2 at its inputs; On block 808 directly provides the BP2 signals in response to either P2 or Q2 at its inputs. Ap

block 809 directly provides a those inputs.

Circuits to provide the binary carry generates and binary propagates of the other orders of the binary adder are similar to the circuitry for position 2. Terminal board 810 is. assumed to have available all such signals. Circuit 811-814 to the right of terminal board 810 accepts binary carry generate BCG and binary propagate signals BP for orders 1-4 and provides a group carry out signal BG1-4 upon the occurrence of any of the four situations which will produce a carry out of position 4. These situations are defined by a binary carry generate 4 BCG4 signal; by a binary propagate 4 signal together with BCG3 at Ap block 813; by BP4 together with BP3 and BCG2 at Ap block 812; or by BP4 together with BP3, BP2 and BCGHI at -Ap block 811. The outputs of Ap blocks 811-813 and a direct connection from BCG4 pass via -On block 814 to provide the group carry signals BG1-4 at +p or -p levels as desired.

--Ap block 815 and its associated convert block CI: 816 respond to a full set of carry propagates in the group 5-8 to provide +p and p BPS-8 signals. The function PEQE signal in response to of this circuit is to allow an instantaneous carry propa- .BINARY ADDER BIT PREFORMER-FIG. 9

Two virtually identical circuits can be used to make up the binary adder bitpreformer. Terminal board 901, circuit blocks 902-914 and terminal board 915 make up the first circuit; terminal board 921, circuit block 922-934 and terminal board 935 make up the second circuit. The first circuit omits two An circuits which if included would be in positions 908 and 911, corresponding to 928 and 931.

One output of the bit preformer is the binary half sum signals BHS1-8, which are used in FIG. 10 to form the binary full sum when carries are inserted.

An block 905 develops the BHSl signals in response to input PlQl and PlQl. The output of An block 905 is thus P1Q1, which another definition of the half sum.

An block 906 develops the BHSZ signal in response to inputs P2Q2 and BCG2. BCG2, which is produced by Ap block 807 in FIG. 8. is equal to P2Q2. An block 906 thus produces BHS2 in response to (P2Q2)(P2Q2). Other half sum signals BHS3-8 are generated similarly by respective An block-s 913, 914,925, 926, 933 and 934.

The bit preformer also produces BCT signals BCTl- BCT4 which are essentially carry to signals. BCTI is produced directly from the 0130-31 si-gnalat Cn block 910 andis a sor-t"of"HO.T 1. BCTZ'is produced directly .from Cn block. 909 in'responseto the BCGI-ll signal, 

4. MEANS FOR LOGICALLY COMBINING MULTI-BIT OPERANDS COMPRISING: (A) A FIRST INPUT MEANS FOR SPECIFYING A MULTI-BIT BINARY REPRESENTATION OF A FIRST OPERAND P; (B) SECOND INPUT MEANS FOR SPECIFYING A MULTI-BIT BINARY REPRESENTATION OF A SECOND OPERAND Q; (C) THIRD INPUT MEANS FOR SPECIFYING A MULTI-BIT BINARY EQUIVALENT OF A RADIX M; (D) FIRST BINARY ARITHMETIC MEANS CONTROLLABLE FOR PERFORMING IN BINARY EACH OF THE OPERATIONS P+Q, P-Q AND Q-P, AND FOR PROVIDING FOR EACH OPERATION, A FULL BINARY RESULT TOGETHER WITH AN INDICATION OF WHETHER THE OPERATION PRODUCED A HIGH ORDER CARRY OUT OR BORROW; (E) SECOND BINARY ARITHMETIC MEANS CONTROLLABLE FOR PERFORMING IN BINARY EACH OF THE OPERATIONS 